package com.wlc.oop.instanceof2;

/**
 * @author 王立朝 wanglichao@champion-credit.com
 * @description
 * @date 2021-07-02 11:59
 */
public class Test {

    public void method01() {
        Person person = new Person();
        Student student = new Student();
        // 把引用类型Person 指向了子类；  instanceof 就是判断 引用类型指向的对象是否是 引用类型的子类或者引用类型
        // instanceof 左右两边的类必须要有继承的关系，否则编译直接会报错
        Person person1 = new Student();
        System.out.println(person1 instanceof Person);
        System.out.println(person instanceof Person);
        System.out.println(student instanceof Person);


    }

    public void method02(){
        // 1、如果子类继承了父类，没有重写父类的方法，执行的是父类；
        // 如果子类继承了父类，并且重写了父类的方法，执行的是子类
        Student student = new Student();
        student.say();
        Person student1 = new Student();
        student1.say();
        // 2、如果子类继承了父类，父类的引用指向的是子类，去执行子类中父类没有方法，会发生强制类型转换，会把父类的类型转换为子类
        student.hey();
        ((Student) student1).hey();
    }
    public static void main(String[] args) {
        Test test = new Test();
        test.method02();
    }
}
